package com.itx.gatewayx.service;

import com.itx.gatewayx.domain.RouteConfig;
import org.springframework.cloud.gateway.route.RouteDefinition;

import java.util.List;

/**
 * 动态路由管理服务
 *
 * @author itx
 */
public interface IDynamicRouteService {
    
    /**
     * 初始化路由配置
     */
    void initRoutes();
    
    /**
     * 刷新路由配置
     * 
     * @return 结果
     */
    boolean refreshRoutes();
    
    /**
     * 添加路由
     * 
     * @param routeConfig 路由配置
     * @return 结果
     */
    boolean addRoute(RouteConfig routeConfig);
    
    /**
     * 更新路由
     * 
     * @param routeConfig 路由配置
     * @return 结果
     */
    boolean updateRoute(RouteConfig routeConfig);
    
    /**
     * 删除路由
     * 
     * @param routeId 路由ID
     * @return 结果
     */
    boolean deleteRoute(String routeId);
    
    /**
     * 获取路由信息
     * 
     * @param routeId 路由ID
     * @return 路由定义
     */
    RouteDefinition getRoute(String routeId);
    
    /**
     * 获取所有路由
     * 
     * @return 路由定义列表
     */
    List<RouteDefinition> getRoutes();
    
    /**
     * 将路由配置转换为路由定义
     * 
     * @param routeConfig 路由配置
     * @return 路由定义
     */
    RouteDefinition convertToRouteDefinition(RouteConfig routeConfig);
}